﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Data_Access_Layer;
using System.Text.RegularExpressions;

namespace Business_Layer
{
    public class SuppilerController
    {
        /// <summary>
        /// Chuỗi lưu lỗi
        /// </summary>
        public string _err="";
        

        /// <summary>
        /// Lấy danh sách nhà cung cấp
        /// </summary>
        /// <returns>Danh sách nhà cung cấp</returns>
        public List<Supplier> GetAll()
        {
            //Load lên những nhà cung cấp chưa bị xóa == thuộc tính deleted=false
            return Supplier.Objects.Where(x=>x.Deleted==false).ToList();
        }


       /// <summary>
       /// Hàm xử lý thêm mới hoặc cập nhật nhà cung cấp
       /// </summary>
       /// <param name="sup">Nhà cung cấp</param>
        public void InsertOrUpdate(Supplier sup)
        {
            _err = "";
            try
            {
                //Nếu Id > 0 nghĩa là đang cập nhật
                if (sup.Id > 0)
                    Supplier.Objects.Update(sup);
                else
                {
                    //Ngược lại == 0 là thêm mới
                    Supplier.Objects.Insert(sup);
                }
                
            }
            catch (Exception ex)
            {
                _err = ex.Message;
            }
        }

        /// <summary>
        /// Xóa nhà cung cấp
        /// </summary>
        /// <param name="sup">Nhà cung cấp</param>
        public void Delete(Supplier sup)
        {
            _err = "";
            try
            {
                Supplier.Objects.Update(sup);
            }
            catch (Exception ex)
            {
                _err = ex.Message;
            }
        }

      
        /// <summary>
        /// Tìm kiếm nhà cung cấp theo mã
        /// </summary>
        /// <param name="id">Mã nhà cung cấp nhập vào</param>
        /// <returns>Danh sách nhà cung cấp</returns>
        public List<Supplier> FindById(int id)
        {
            return Supplier.Objects.Where(x =>x.Id.ToString().IndexOf(id.ToString())!=-1 && x.Deleted == false).ToList();
        }


        /// <summary>
        /// Tìm kiếm nhà cung cấp theo tên
        /// </summary>
        /// <param name="id">Tên nhà cung cấp nhập vào</param>
        /// <returns>Danh sách nhà cung cấp</returns>
        public List<Supplier> FindByName(string name)
        {
            return
                Supplier.Objects.Where(x => x.SupName.IndexOf(name) != -1 && x.Deleted == false).ToList();
        }

        /// <summary>
        /// Tìm kiếm nhà cung cấp theo số điện thoại
        /// </summary>
        /// <param name="id">Số điện thoại nhập vào</param>
        /// <returns>Danh sách nhà cung cấp</returns>
        public List<Supplier> FindByPhone(string phone)
        {
            return
                Supplier.Objects.Where(x => x.Phone.IndexOf(phone) != -1 && x.Deleted == false).ToList();
        }

        /// <summary>
        /// Tìm kiếm nhà cung cấp theo địa chỉ
        /// </summary>
        /// <param name="id">Địa chỉ nhà cung cấp nhập vào</param>
        /// <returns>Danh sách nhà cung cấp</returns>
        public List<Supplier> FindByAdd(string add)
        {
            return
                Supplier.Objects.Where(x => x.Address.IndexOf(add) != -1 && x.Deleted == false).ToList();
        }
    }
}
